package com.hepinghospital.user.ui.activity.eyecheck;

import android.Manifest;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;

import com.hepinghospital.user.R;
import com.hepinghospital.user.adapter.HelpListAdapter;
import com.hepinghospital.user.base.BaseActivity;
import com.hepinghospital.user.ui.dialog.ApplyPermissionDialog;
import com.hepinghospital.user.util.PermissionsChecker;
import com.hepinghospital.user.util.ToastUtil;
import com.tbruyelle.rxpermissions2.RxPermissions;

import java.util.List;

import androidx.annotation.RequiresApi;

import butterknife.BindView;
import butterknife.OnClick;
import cn.bertsir.zbar.QrConfig;
import cn.bertsir.zbar.QrManager;
import cn.bertsir.zbar.view.ScanLineView;
import jz.joyoung.robot.util.UtilString;

/**
 * @time 2021/1/5 14:56
 */

public class EyeCheckActivity extends BaseActivity {


    @BindView(R.id.ll_eye_yuyue)
    LinearLayout llEyeYuyue;
    @BindView(R.id.ll_eye_zbar)
    LinearLayout llEyeZbar;
    @BindView(R.id.ll_eye_jilu)
    LinearLayout llEyeJilu;
    private HelpListAdapter helpListAdapter;
    private String hospitalId;
    // 所需的全部权限
    static final String[] PERMISSIONS = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.CAMERA
    };
    private PermissionsChecker mPermissionsChecker; // 权限检测器

    @Override
    protected void initViews() {
        mPermissionsChecker = new PermissionsChecker(mContext);
    }

    @Override
    protected void initData() {
    }


    @Override
    protected int getLayoutResource() {
        return R.layout.activity_eye_type;
    }


    @OnClick({R.id.ll_eye_yuyue, R.id.ll_eye_zbar, R.id.ll_eye_jilu})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.ll_eye_yuyue:
                startActivity(new Intent(mContext, EyeBookActivity.class));
                break;
            case R.id.ll_eye_zbar:
                // 缺少权限时, 进入权限配置页面
                if (mPermissionsChecker.lacksPermissions(PERMISSIONS)) {
                    getPermission();
                } else {
                    startScan();
                }

                break;
            case R.id.ll_eye_jilu:
                startActivity(EyeBookListActivity.class);
                break;
            default:
                break;
        }
    }

    /**
     * 扫描设备二维码
     *
     * @time 2021/1/8 9:44
     */
    private void startScan() {
        QrConfig qrConfig = new QrConfig.Builder()
                .setDesText("(识别二维码)")//扫描框下文字
                .setShowDes(true)//是否显示扫描框下面文字
                .setShowLight(true)//显示手电筒按钮
                .setShowTitle(false)//显示Title
                .setShowAlbum(true)//显示从相册选择按钮
                .setNeedCrop(true)//是否从相册选择后裁剪图片
                .setCornerColor(Color.parseColor("#E42E30"))//设置扫描框颜色
                .setLineColor(Color.parseColor("#E42E30"))//设置扫描线颜色
                .setLineSpeed(QrConfig.LINE_MEDIUM)//设置扫描线速度
                .setScanType(QrConfig.TYPE_QRCODE)//设置扫码类型（二维码，条形码，全部，自定义，默认为二维码）
                .setScanViewType(QrConfig.SCANVIEW_TYPE_QRCODE)//设置扫描框类型（二维码还是条形码，默认为二维码）
                .setCustombarcodeformat(QrConfig.BARCODE_PDF417)//此项只有在扫码类型为TYPE_CUSTOM时才有效
                .setPlaySound(true)//是否扫描成功后bi~的声音
                .setDingPath(R.raw.qrcode)//设置提示音(不设置为默认的Ding~)
                .setIsOnlyCenter(true)//是否只识别框中内容(默认为全屏识别)
                .setTitleText("")//设置Tilte文字
                .setTitleBackgroudColor(Color.parseColor("#262020"))//设置状态栏颜色
                .setTitleTextColor(Color.WHITE)//设置Title文字颜色
                .setShowZoom(true)//是否开始滑块的缩放
                .setAutoZoom(false)//是否开启自动缩放(实验性功能，不建议使用)
                .setFingerZoom(true)//是否开始双指缩放
                .setDoubleEngine(false)//是否开启双引擎识别(仅对识别二维码有效，并且开启后只识别框内功能将失效)
                .setScreenOrientation(QrConfig.SCREEN_PORTRAIT)//设置屏幕方式
                .setOpenAlbumText("选择要识别的图片")//打开相册的文字
                .setLooperScan(false)//是否连续扫描二维码
                .setLooperWaitTime(Integer.parseInt("5") * 1000)//连续扫描间隔时间
                .setScanLineStyle(ScanLineView.style_hybrid)//扫描线样式
                .setAutoLight(false)//自动灯光
                .setShowVibrator(true)//是否震动提醒
                .create();
        QrManager.getInstance().init(qrConfig).startScan(mContext, result -> {
            Log.e("onScanSuccess---", result.getContent());
            if (!UtilString.isEmpty(result.getContent())) {
                try {
                    String data = result.getContent();
                    hospitalId = data.substring(data.indexOf("=") + 1);
                    Log.e("presignedUrl -----", hospitalId);
                    Bundle bundle = new Bundle();
                    bundle.putString("hosDevId", hospitalId);
                    startActivity(EyeBookActivity.class, bundle);
//                    JSONObject obj = new JSONObject(content);
//                    getTaskWorker(obj.optString("taskId"), obj.optString("studentId"));
                } catch (Exception e) {
                    ToastUtil.showToast(mContext, "二维码识别失败");
                    startActivity(EyeBookActivity.class);
                }

            }

        });
    }

    @SuppressLint("CheckResult")
    private void getPermission() {
        ApplyPermissionDialog applyPermissionDialog = ApplyPermissionDialog.newInstance("3", true);
        applyPermissionDialog.show(getSupportFragmentManager(), "applyPermissionDialog");
        applyPermissionDialog.setmListener(new ApplyPermissionDialog.OnItemClickListener() {

            @RequiresApi(api = Build.VERSION_CODES.O)
            @Override
            public void onConfirm() {
                RxPermissions permissions = new RxPermissions(EyeCheckActivity.this);
                permissions.request(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE)
                        .subscribe(granted -> {
                            if (granted) {
                                //已经打开权限
                                startScan();
                            } else {
                                ToastUtil.showToast(mContext, "请同意相册和存储权限，否则功能无法使用");
                                startNotificationSetting(mContext);
                            }
                        });
            }

            @Override
            public void onCancel() {

            }
        });

    }


}
